<?php

/**
 *  Actions classe 
 *   
 *  Acoes dentro do sistema
 * 
 *  @package Helpers
 *  @category Utils
 *  @author Carlos O Carvalho
 *  @version 1.0.0
 *  @access public
 *  
 *  --------------------------------------------------------------------------- <br>
 *  Use Actions::method() <br>
 *  ---------------------------------------------------------------------------
 *  */
class Actions {

    /**
     * saveHabilitacao
     * 
     * save habilitacao do usuario no leilao, usada para gerar habilitação para cada usuário em leilões. 
     * 
     * @param int $idUser codigo do usuario logado no sistema
     * @param int $idLeilao codiogo do leilao 
     */
    public static function saveHabilitacao($idUser, $idLeilao) {
        $ci = & get_instance();


        if (!self::getHabilitacao($idUser, $idLeilao)) {

            $ci->db->trans_start();
            $ci->db->insert('habilitacoes', array('KEY_HASH' => self::createKeyHabilitacao($idUser, $idLeilao),
                'USER_ID' => $idUser,
                'LEILAO_ID' => $idLeilao,
                'CREATE' => date('Y-m-d H:i:s')));

            $ci->db->trans_complete();

            if ($ci->db->trans_status() === FALSE) {
                return true;
            }
            return false;
        }
        return true;
    }

    /**
     * Recuperando a habilitacao do usuario no leilao.
     * @param $idUser id do usuario logado
     * @param $idLeilao codiogo do leilao
     * @depends ci->model->db->get_where();  
     */
    public static function getHabilitacao($idUser, $idLeilao) {
        $ci = & get_instance();
        $isKeyExists = $ci->db->get_where('habilitacoes', array('KEY_HASH' => self::createKeyHabilitacao($idUser, $idLeilao)))->num_rows();


        if ($isKeyExists > 0) {
            return true;
        }

        return false;
    }

    /**
     * FlashMessage
     * 
     * Mensagens para o template,essas mensagens serão temporárias no template. 
     * 
     * @param string $str mensagem a ser adicionada ao flash
     * @param string $type qual tipo de mensagem que será emitida default=success (success|info|danger)
     * @depends library ci->session;  
     */
    public static function FlashMessage($str, $type = 'success') {
        $ci = & get_instance();
        $ci->load->library('session');
        $ci->session->set_flashdata('message_flashdata', '<div class="message-template alert alert-' . $type . '"> ' . $str . '</div>');
    }

    /**
     * getMessageTemp
     * 
     * Dever ser usada no template do sistema 
     * 
     * @return  string retorna mensagem temporárias adicionadas pelo flashMessage.
     * @depends library ci->session;  
     */
    public static function getMessageTemp() {

        $ci = & get_instance();
        $ci->load->library('session');
        return $ci->session->flashdata('message_flashdata');
    }

    /**
     * message
     * 
     * Recupera messagens para o sistema no do arquivo messages.json
     * 
     * @param string $str codigo para ser resgatado  
     */
    public static function message($str) {
        $json = json_decode(file_get_contents(BASESITE . '/public/messages.json'));
        return $json->$str;
    }

    /**
     * createKeyHabilitacao
     * 
     * generate hash data 
     * 
     * @param int $idUser
     * @param int $idLeilao
     * @return string hash data
     */
    private static function createKeyHabilitacao($idUser, $idLeilao) {
        return hash('sha512', $idUser . $idLeilao);
    }

}
